home *** CD-ROM | disk | FTP | other *** search
- #include <MacIncludes.h>
-
- #include "Rk.h"
- #include "Structs.h"
- #include "file+rk.h"
-
- extern SysEnvRec gMac;
- extern WindowPtr gText,gPredict;
- extern Boolean gHasWaitNextEvent; /* set up by Initialize */
- extern Boolean gHaveAUX;
- extern Boolean gInBackground; /* maintained by Initialize and DoEvent */
- extern short gLogFileRef;
- /* extern MenuHandle gHMenus[]; */
- extern Rect gTermTEDest,gTermTEView;
- extern TEHandle gTermTE;
- extern FontInfo gFInfo,gNormFInfo;
- extern short gSpecialFont;
- extern Rect gHiliteRect;
- extern ControlHandle gPredScroll;
- extern GrafPort goffScreen;
- extern THPrint gPrinterRecord;
- extern PrefHandle gPrefs,gOldPrefs,gStartPrefs;
- extern char *prime_file, *zero_freq_file;
- extern char output_string[1024], temp_str[1024];
- extern int output_string_length;
- extern int num_buffers;
- extern Boolean gNewFile;
- extern Str255 gFileName;
-
- extern Ptr gExtraMems;
- extern Boolean gChanged;
-
- extern pascal void InitOffscreen();
-
-
- extern void FileSystemError(Str255 FileName,Str255 doing, OSErr err, Boolean fatal);
-
- Boolean TrapAvailable( short tNumber, TrapType tType );
-
- #pragma segment Init
- Init()
- {
- #pragma unused (err,LogFileName)
- Handle menuBar;
- Str255 LogFileName;
- OSErr err;
- EventRecord event;
- short count;
- acurHandle acur;
- short *flagptr;
- AppFile FinderFile;
- short FinderMsg, FinderCount;
- int x;
- short thefile;
- Ptr TEText;
- int size;
-
-
- gHasWaitNextEvent = TrapAvailable(_WaitNextEvent, ToolTrap);
- gInBackground = false;
-
- InitGraf((Ptr) &qd.thePort);
- InitFonts();
- FlushEvents( everyEvent, 0 );
- InitWindows();
- InitMenus();
- TEInit();
- InitDialogs(nil);
- InitCursor();
- SetUpMemory();
-
- for (count = 1; count <= 3; count++)
- GetNextEvent(everyEvent, &event);
-
- SysEnvirons(kSysEnvironsVersion, &gMac);
-
- /* Make sure that the machine has at least 128K ROMs. If it doesn't, exit. */
-
- if (gMac.machineType < 0) AlertUser();
- flagptr = (short *) HWCfgFlags;
- if (*flagptr & (1 << 9))
- gHaveAUX = 1; /* Do Have A/UX */
- else
- gHaveAUX = 0; /* Don't have A/UX */
-
-
- menuBar = GetNewMBar(rMenuBar); /* read menus into menu bar */
- if ( menuBar == nil ) AlertUser();
- SetMenuBar(menuBar); /* install menus */
- DisposHandle(menuBar);
- AddResMenu(GetMHandle(mApple), 'DRVR'); /* add DA names to Apple menu */
-
- DrawMenuBar();
-
- InitOffscreen();
-
- GetPrefs();
-
- acur=(acurHandle)GetResource('acur',0);
- InitCursorCtl(acur);
- Show_Cursor(ARROW_CURSOR);
- init_reactive();
-
- gPrinterRecord = (THPrint)NewHandle(sizeof(TPrint));
- if (gPrinterRecord){
- PrOpen();
- PrintDefault( gPrinterRecord );
- PrClose();
- }
- CouldAlert(rLowMems);
- gExtraMems = NewPtr(100000);
- CountAppFiles(&FinderMsg,&FinderCount);
- if(FinderCount==0)
- DoNew();
- else{
- switch (FinderMsg){
- case appOpen:
- GetAppFiles(1,&FinderFile);
- if(FinderFile.fType != 'TEXT'){
- DoNew();
- break;
- }
- err=FSOpen(FinderFile.fName,FinderFile.vRefNum,&thefile);
- if(err){
- FileSystemError(FinderFile.fName,"\popen",err,false);
- return;
- }
- err=GetEOF(thefile,&size);
- if(err){
- FileSystemError(FinderFile.fName,"\pfind size of",err,false);
- return;
- }
- if(size>kMaxTELength){
- AlertUser(eExceedChar);
- FSClose(thefile);
- return;
- }
- TEText=NewPtr(size);
- if(TEText==nil){
- AlertUser(eNoMemory);
- FSClose(thefile);
- return;
- }
- DoNew();
- if(gText){
- err=FSRead(thefile,&size,TEText);
- if(err){
- FileSystemError(FinderFile.fName,"\pfind size of",err,false);
- return;
- }
- TESetText(TEText,size,((DocumentPeek)gText)->docTE);
- }
- DisposPtr(TEText);
- err=FSClose(thefile);
- if(err){
- FileSystemError(FinderFile.fName,"\pfind size of",err,false);
- return;
- }
- TESetSelect(0,0,((DocumentPeek)gText)->docTE);
- AdjustScrollbars(gText,false);
- SetWTitle(gText,FinderFile.fName);
- gNewFile=false;
- for(x=0;x<=FinderFile.fName[0];x++)
- gFileName[x]=FinderFile.fName[x];
- gChanged = false;
- ClrAppFiles(1);
- break;
- case appPrint:
- PrOpen();
- if(PrError() == noErr)
- PrStlDialog(gPrinterRecord);
- else ExitToShell();
- PrClose();
-
- for(x=1;x<=FinderCount;x++){
- GetAppFiles(x,&FinderFile);
- if(FinderFile.fType != 'TEXT') continue;
- err=FSOpen(FinderFile.fName,FinderFile.vRefNum,&thefile);
- if(err){
- FileSystemError(FinderFile.fName,"\popen",err,false);
- return;
- }
- err=GetEOF(thefile,&size);
- if(err){
- FileSystemError(FinderFile.fName,"\pfind size of",err,false);
- return;
- }
- if(size>kMaxTELength){
- AlertUser(eExceedChar);
- FSClose(thefile);
- return;
- }
- TEText=NewPtr(size);
- if(TEText==nil){
- AlertUser(eNoMemory);
- FSClose(thefile);
- return;
- }
- DoNew();
- if(gText){
- err=FSRead(thefile,&size,TEText);
- if(err){
- FileSystemError(FinderFile.fName,"\pfind size of",err,false);
- return;
- }
- TESetText(TEText,size,((DocumentPeek)gText)->docTE);
- }
- DisposPtr(TEText);
- err=FSClose(thefile);
- if(err){
- FileSystemError(FinderFile.fName,"\pfind size of",err,false);
- return;
- }
- SetWTitle(gText,FinderFile.fName);
- PrintText(((DocumentPeek)gText)->docTE);
- DoCloseWindow(gPredict);
- ClrAppFiles(x);
- }
- ExitToShell();
- break;
- }
- }
- }
-
- #pragma segment Init
- Boolean TrapAvailable(tNumber,tType)
- short tNumber;
- TrapType tType;
- {
- /* Check and see if the trap exists. On 64K ROM machines, tType will be ignored. */
-
- return NGetTrapAddress(tNumber, tType) != GetTrapAddress(_Unimplemented);
- } /*TrapAvailable*/
-
-
-
- #pragma segment Init
- set_up_buffers()
- {
- }
-
- /* Used whenever a, like, fully fatal error happens */
- #pragma segment Init
- void BigBadError(error)
- short error;
- {
- AlertUser(error);
- ExitToShell();
- }
-